The IEEE 1394 bus is a low cost, high performance serial bus. It has a read/write memory architecture and a highly sophisticated communication protocol. Data rates of 100, 200 or 400 Mbit/s can be transmitted in nearly real time. Simultaneously, data can be transmitted bi-directionally. The first ten bits of transmitted address values refer to one of up to 1023 possible IEEE 1394 bus clusters. The following six bits of the transmitted address values refer within a specific cluster to one of up to 63 nodes to which an application or device is assigned. Data between nodes can be exchanged without interaction of a host controller. Devices can be connected to or disrupted from the network at any time, allowing a plug and play behavior.
The standardized cable connection for the nodes has a length of 4.5 m and contains three twisted cable pairs of which two pairs serve for data and control information transmission and the further pair carries supply voltages of 8V to 40V. Three level coding is used: HIGH (H), LOW (L), and HIGH IMPEDANCE (Z). H overrides L, L overrides Z. The characteristic impedance is 110 .OMEGA.. There is also a version IEEE 1394-1995 of the bus specification including only two twisted pairs of cables on which no power supply voltage is present. The communication protocol has three layers: physical layer, link layer, and transaction layer. Typically, the transaction layer is realized by firmware whereas the other layers are implemented using chip sets.
The physical layer contains analog transceivers and a digital state machine. It handles bus auto-configuration and hot plug. It reclocks, regenerates and repeats all packets and forwards all packets to the local link layer. It carries out-packet framing, for example speed code, prefix, and packet end assembling. It arbitrates and transmits packets from the local link layer. Available integrated circuit ("IC") types are e.g. TSB11C01, TSB11LV01, TSB21LV03, and TSB41LV03 of Texas Instruments, MB86611 of Fujitsu, and 21S750 of IBM.
The link layer performs all digital logic. It recognizes packets addressed to the node by address recognition and decodes the packet headers. It delivers packets to higher layers and generates packets from higher layers. It works either isochronous for AV data use or asynchronous for control data use.
In the isochronous mode a channel having a guaranteed bandwidth is established. There is a defined latency. The transmission is performed in 125 .mu.s time slots or cycles. Headers and data blocks of a packet have separate CRCs (cyclic redundancy check). This mode has a higher priority than the asynchronous data transfer mode.
The asynchronous mode is not time critical, but safe. It operates as an acknowledged service with a busy and retry protocol. Fixed addresses are used. Transmission takes place when the bus is idle. The asynchronous mode handles read request/response, write request/response, and lock request/response. It performs cycle control, CRC generation and validation. Available link layer IC types are e.g. TSB12C01A, TSB12LV21, TSB12LV31, and TSB12LV41 of Texas Instruments, and PDI1394L11 of Philips.
The transaction layer implements asynchronous bus transactions:
Read request/read response PA1 Write request/write response PA1 Lock request/lock response PA1 wherein said first link layer IC performs input and output of bus-related data and said second link layer IC performs either input or output of bus-related data or PA1 wherein said first link layer IC performs input of first bus-related data and said second link layer IC performs input of second bus-related data and wherein said first and second bus-related data belong to different data streams, in particular two video data streams or one video and one audio data stream. PA1 a physical layer IC and a first link layer IC for interfacing between the bus and said device; PA1 a second link layer IC which is connected on one side to the interface input/output of said first link layer IC and on the other side to said device, PA1 wherein said first link layer IC performs input and output of bus-related data and said second link layer IC performs either input or output of bus-related data, or PA1 wherein said first link layer IC performs input of first bus-related data and said second link layer IC performs input of second bus-related data and said first and second bus-related data belong to different data streams, in particular two video data streams or one video and one audio data stream.
As mentioned above it can be implemented by software running on a microcontroller, such as e.g. the i960 of SparcLite.
There may also be an AV (audio video) layer carrying out device control, connection management, timestamping, and packetizing.